package org.Niu.July8th.collectionTest.listTest;

import java.util.Objects;

/**
 *
 * 因为List内部并不是通过==判断两个元素是否相等，而是使用equals()方法判断两个元素是否相等
 * 要正确使用List的contains()、indexOf()这些方法，放入的实例必须正确覆写equals()方法
 *
 */
public class EqualsTest {
    public static void main(String[] args) {

    }

}
class Person {
    String name;

    Integer age;
    public Person(String name) {
        this.name = name;
    }
    public boolean equals(Object o) {
        // Java 16+ 允许直接在 instanceof 后面声明一个变量 p，如果 o 是 Person 类型
        // p 会自动绑定为 o 转型后的 Person 对象，无需手动转型。
        if (o instanceof Person p) {
            // 简化引用类型的比较，我们使用Objects.equals()静态方法：
            return Objects.equals(this.name, p.name) && this.age == p.age;
        }
        return false;
    }

}
